package it.unisalento.appsalento.activity.fragment;

import it.unisalento.R;
import it.unisalento.appsalento.activity.App;
import it.unisalento.appsalento.activity.MainActivity;
import it.unisalento.appsalento.adapter.RisultatiAdapter;
import it.unisalento.appsalento.asynctasc.AccettaRisultatoAsyncTask;
import it.unisalento.appsalento.model.Appello;

import java.util.ArrayList;

import android.app.Dialog;
import android.app.Fragment;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class RisultatiFragment extends Fragment {
	private ArrayList<Appello> risultati = new ArrayList<Appello>();
	private RisultatiAdapter adapter;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		View rootView = inflater.inflate(R.layout.fragment_risultati,
				container, false);

		ListView mListaRisultati = (ListView) rootView
				.findViewById(R.id.listViewRisultati);

		risultati.clear();
		for (Appello appello : App.appelli) {
			if (appello.getStato().equals(Appello.DA_ACCETTARE)
					|| appello.getStato().equals(Appello.RISULTATO_ACCETTATO)
					|| appello.getStato().equals(Appello.RISULTATO_RIFIUTATO)) {
				risultati.add(appello);
			}
		}

		adapter = new RisultatiAdapter(getActivity(), R.layout.row_risultato,
				risultati);
		mListaRisultati.setAdapter(adapter);
		mListaRisultati.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View v,
					int position, long id) {
				final Appello appello = (Appello) parent
						.getItemAtPosition(position);

				Dialog dialog = new Dialog(parent.getContext());
				dialog.setContentView(R.layout.dialog_risultato);
				dialog.setTitle(appello.getNomeEsame());

				TextView mRisultato = (TextView) dialog
						.findViewById(R.id.risultato);
				TextView mRisultatoLode = (TextView) dialog
						.findViewById(R.id.risultato_lode);

				mRisultato.setText(appello.getRisultato());
				mRisultatoLode.setText(appello.getRisultatoLode());

				Button mAccetta = (Button) dialog
						.findViewById(R.id.accetta_risultato);
				Button mRifiuta = (Button) dialog
						.findViewById(R.id.rifiuta_risultato);
				mAccetta.setOnClickListener(new View.OnClickListener() {
					@Override
					public void onClick(View view) {
						AccettaRisultatoAsyncTask asyncTask = new AccettaRisultatoAsyncTask(
								appello.getIdAppello(), true,
								(MainActivity) getActivity());
						if (Build.VERSION.SDK_INT >= 11) {
							asyncTask
									.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
						} else {
							asyncTask.execute();
						}
					}
				});
				mRifiuta.setOnClickListener(new View.OnClickListener() {
					@Override
					public void onClick(View view) {
						AccettaRisultatoAsyncTask asyncTask = new AccettaRisultatoAsyncTask(
								appello.getIdAppello(), false,
								(MainActivity) getActivity());
						if (Build.VERSION.SDK_INT >= 11) {
							asyncTask
									.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
						} else {
							asyncTask.execute();
						}
					}
				});

				dialog.setCancelable(true);
				dialog.show();
			}

		});

		return rootView;
	}

}
